package com.epoint.utils.template.update;

import java.util.List;

public abstract class UpdateTemplate<T>
{

    /**
         * 获取连接和数据库操作对象
     */
    abstract void getConnection();
 
    /**
         * 执行sql返回结果
     * @param sql sql
     * @param sqlFieldList 更新时sql字段的顺序
     * @param obj 要更新的对象信息 
     * @return 结果
     */
    abstract int updateData(String sql, List<String> sqlFieldList, T obj);
 
    /**
         * 释放资源
     */
    abstract void closeConnection();
 

    /**
         * 这里是指执行上面方法的规则，一般不能让子类随意更改所以用关键字final修饰
     * @param sql sql
     * @param sqlFieldList 更新时sql字段的顺序
     * @param obj 要更新的对象信息 
     * @return 结果
     */
    public final int executeSql(String sql, List<String> sqlFieldList, T obj) {
        this.getConnection();
        int i = this.updateData(sql, sqlFieldList, obj);
        this.closeConnection();
        return i;
    }

}
